// import 'package:flutter/foundation.dart';
// import 'package:flutter/material.dart';
// import 'package:flutter/services.dart';
// import 'package:image/image.dart' as img;
// import 'package:image_picker/image_picker.dart';
// import 'package:mobile_scanner/mobile_scanner.dart';
// import 'package:permission_handler/permission_handler.dart';
// import 'package:zxing2/qrcode.dart' as zxing2;
//
// import '../../core_kit_localizations.dart';
// import '../../logger.dart';
// import '../core_cupertino_assets.dart';
// import 'scanner_error_widget.dart';
//
// class CoreScanView extends StatefulWidget {
//   const CoreScanView({
//     super.key,
//     required this.onScan,
//   });
//
//   final void Function(String) onScan;
//   @override
//   State<CoreScanView> createState() => _CoreScanViewState();
// }
//
// class _CoreScanViewState extends State<CoreScanView>
//     with WidgetsBindingObserver {
//   int permissionStatus = 0;
//
//   final MobileScannerController msCtrl = MobileScannerController(
//     formats: const <BarcodeFormat>[BarcodeFormat.qrCode],
//   );
//
//   @override
//   void initState() {
//     super.initState();
//     msCtrl.start();
//     onPermission(permission: Permission.camera);
//     //监听生命周期
//     WidgetsBinding.instance.addObserver(this);
//
//     msCtrl.barcodes.listen((data) async {
//       final scannedBarcodes = data.barcodes;
//       if (scannedBarcodes.isNotEmpty) {
//         final scanData =
//             scannedBarcodes.first.displayValue ?? 'No display value.';
//         CoreKitLogger().d('CoreScanView onScan=================$scanData');
//         widget.onScan(scanData);
//         msCtrl.stop().ignore();
//         if (context.mounted) {
//           Navigator.of(context).pop();
//         }
//       }
//     });
//   }
//
//   @override
//   void dispose() {
//     msCtrl.dispose();
//     //释放监听
//     WidgetsBinding.instance.removeObserver(this);
//     super.dispose();
//   }
//
//   @override
//   void didChangeAppLifecycleState(AppLifecycleState state) {
//     switch (state) {
//       //从后台切换前台，界面可见
//       case AppLifecycleState.resumed:
//         break;
//       //应用挂起，比如退到后台，失去了焦点且不会收到draw frame回调
//       case AppLifecycleState.paused:
//         onPermission(permission: Permission.camera);
//         break;
//       //	APP结束时调用
//       case AppLifecycleState.detached:
//         break;
//       //界面退到后台或弹出对话框情况下， 即失去了焦点但仍可以执行draw frame回调
//       case AppLifecycleState.inactive:
//         break;
//       case AppLifecycleState.hidden:
//         break;
//     }
//   }
//
//   //获取权限
//   Future<void> onPermission({required Permission permission}) async {
//     if (kIsWeb) {
//       permissionStatus = 1;
//     } else {
//       final value = await Permission.camera.request();
//       permissionStatus = value.index;
//       setState(() {});
//     }
//
//     var content = '';
//     if (permissionStatus != PermissionStatus.granted.index && context.mounted) {
//       if (permission == Permission.photos) {
//         content = CoreKitS.of(context).permissionPhotosClose;
//       }
//       if (permission == Permission.camera) {
//         content = CoreKitS.of(context).permissionCameraClose;
//       }
//
//       await CoreCupertinoAssets.showCupertinoAlertDialog(
//         context,
//         content: content,
//         callback: () => Navigator.of(context).pop(),
//       );
//       return;
//     }
//
//     if (permission == Permission.photos) {
//       await onOpenAlbum();
//     }
//   }
//
//   //获取照片权限
//   Future<void> onOpenAlbum() async {
//     ///获取照片操作
//     final xFile = await ImagePicker().pickImage(
//       source: ImageSource.gallery,
//     );
//
//     if (xFile != null) {
//       if (kIsWeb) {
//         final bytes = await xFile.readAsBytes();
//
//         img.Image? image;
//         //这里还是有点问题 只能识别 png 或者jpg？有待研究
//         if (xFile.mimeType != null && xFile.mimeType!.contains('png')) {
//           image = img.decodePng(bytes);
//         } else {
//           image = img.decodeJpg(bytes);
//         }
//
//         if (image != null) {
//           final zxing2.LuminanceSource source = zxing2.RGBLuminanceSource(
//               image.width,
//               image.height,
//               image
//                   .convert(numChannels: 4)
//                   .getBytes(order: img.ChannelOrder.rgba)
//                   .buffer
//                   .asInt32List());
//           final bitmap = zxing2.BinaryBitmap(zxing2.HybridBinarizer(source));
//
//           final reader = zxing2.QRCodeReader();
//           final result = reader.decode(bitmap);
//           widget.onScan(result.text);
//           if (!mounted) {
//             return;
//           }
//           Navigator.of(context).pop();
//         } else {}
//       } else {
//         await msCtrl.analyzeImage(xFile.path);
//         setState(() {});
//       }
//     }
//   }
//
//   @override
//   Widget build(BuildContext context) {
//     final scanWindow = Rect.fromCenter(
//       center: MediaQuery.sizeOf(context).center(Offset.zero),
//       width: MediaQuery.sizeOf(context).width,
//       height: MediaQuery.sizeOf(context).height,
//     );
//
//     return Scaffold(
//       extendBodyBehindAppBar: true,
//       backgroundColor: Colors.transparent,
//       appBar: AppBar(
//         backgroundColor: Colors.transparent,
//         systemOverlayStyle: const SystemUiOverlayStyle(
//           systemNavigationBarColor: Colors.transparent,
//           statusBarColor: Colors.transparent, //设置为透明
//           systemNavigationBarIconBrightness: Brightness.light,
//           statusBarIconBrightness: Brightness.light,
//           statusBarBrightness: Brightness.dark,
//         ),
//         leading: IconButton(
//           icon: const Icon(
//             Icons.arrow_back_ios,
//           ),
//           onPressed: () => Navigator.of(context).pop(),
//         ),
//       ),
//       body: Stack(
//         children: <Widget>[
//           SizedBox(
//             width: MediaQuery.sizeOf(context).width,
//             height: MediaQuery.sizeOf(context).height,
//             child: permissionStatus == 1
//                 ? MobileScanner(
//                     controller: msCtrl,
//                     scanWindow: scanWindow,
//                     errorBuilder: (context, error, child) {
//                       return ScannerErrorWidget(error: error);
//                     },
//                   )
//                 : null,
//           ),
//           Positioned(
//             left: 20,
//             bottom: MediaQuery.paddingOf(context).bottom,
//             child: GestureDetector(
//               onTap: () => onPermission(
//                 permission: Permission.photos,
//               ),
//               child: const Icon(
//                 Icons.image,
//                 size: 44,
//                 color: Colors.white,
//               ),
//             ),
//           )
//         ],
//       ),
//     );
//   }
// }
